home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PC Graphics Unleashed
/
PC Graphics Unleashed.iso
/
ch18
/
lightr
/
dat2pat.awk
next >
Wrap
Text File
|
1993-06-30
|
2KB
|
101 lines
BEGIN {
getline
if ($1 != "v") {
print "error: bad viewing" >"/dev/stderr"
exit 1
}
getline
getline
vx = $1
vy = $2
vz = $3
print "# from", $1, $2, $3
getline
print "# up", $1, $2, $3
getline
print "# at", $1 + vx, $2 + vy, $3 + vz
getline
print "# fov", $1 / 2, $2 / 2
getline
if ($1 != 3) {
print "error: not RGB" >"/dev/stderr"
exit 1
}
getline
print "Number objects", $1
no = $1
for (o=1;o<=no;o++) {
getline
getline
getline
e = $1
if (e == 1) {
getline
er = $1
if (er > 1) er = 1
eg = $2
if (eg > 1) eg = 1
eb = $3
if (eb > 1) eb = 1
}
if (e == 0) {
er = 0
eg = 0
eb = 0
}
getline
getline
rr = $1
rg = $2
rb = $3
getline
if ($1 != 0) {
print "error: primitive not yet supported" >"/dev/stderr"
exit 1
}
print "Object obj" o, "mesh {"
print " OWMatrix mat" o, "{ 1 0 0 0 1 0 0 0 1 0 0 0 }"
printf " Prop prop%d { E{ %g %g %g } p{ %g %g %g } Kd{ 1 } Ks{ 0 }\n",\
o, er, eg, eb, rr, rg, rb
print " NumMeshes 1"
print " Mesh mesh" o, "1 {"
getline
vx1 = $1
vy1 = $2
vz1 = $3
getline
vx2 = $1
vy2 = $2
vz2 = $3
getline
vx3 = $1
vy3 = $2
vz3 = $3
getline
vx4 = $1
vy4 = $2
vz4 = $3
p0x = vx2 - vx1
p0y = vy2 - vy1
p0z = vz2 - vz1
p1x = vx4 - vx1
p1y = vy4 - vy1
p1z = vz4 - vz1
nx = p0y * p1z - p0z * p1y
ny = p0z * p1x - p0x * p1z
nz = p0x * p1y - p0y * p1x
nl = sqrt(nx * nx + ny * ny + nz * nz)
nx /= nl
ny /= nl
nz /= nl
print " Patch norm1 4 {"
printf " { %g %g %g } { %g %g %g }\n", nx, ny, nz, nx, ny, nz
printf " { %g %g %g } { %g %g %g }\n", nx, ny, nz, nx, ny, nz
print " Patch vert1 4 {"
printf " { %g %g %g } { %g %g %g }\n", vx1, vy1, vz1, vx2, vy2, vz2
printf " { %g %g %g } { %g %g %g }\n", vx3, vy3, vz3, vx4, vy4, vz4
print " }"
print "}"
}
}